-- *****************************************************************
-- CISCO-IMAGE-CHECK-MIB.my:  Cisco Image Check MIB file
--
-- May 2003, Charuhas Ghatge
--
-- Copyright (c) 2003 by cisco Systems, Inc.
-- All rights reserved.
-- *****************************************************************

CISCO-IMAGE-CHECK-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY,
        OBJECT-TYPE,
        Integer32
                FROM SNMPv2-SMI
        SnmpAdminString 
                FROM SNMP-FRAMEWORK-MIB
        RowStatus
                FROM SNMPv2-TC
        MODULE-COMPLIANCE,
        OBJECT-GROUP
                FROM SNMPv2-CONF
        ciscoMgmt
                FROM CISCO-SMI;

ciscoImageCheckMIB  MODULE-IDENTITY
        LAST-UPDATED    "200305150000Z"
        ORGANIZATION    "Cisco Systems, Inc."
        CONTACT-INFO
                "       Cisco Systems
                        Customer Service

                Postal: 170 W. Tasman Drive
                        San Jose, CA  95134
                        USA

                Tel: +1 800 553-NETS

                E-mail: cs-snmp@cisco.com"
        DESCRIPTION
                "Initial version of Image Check MIB."
        ::= { ciscoMgmt 99990 }


ciscoImageCheckMIBObjects  OBJECT IDENTIFIER 
                             ::= { ciscoImageCheckMIB 1 }

ciscoImageCheck   OBJECT IDENTIFIER 
                    ::= { ciscoImageCheckMIBObjects 1 }

--
--   When a switch runs different versions of software on the active
--   and the standby supervisor, the behaviour of the two versions
--   of the software can be different. 
--   The objective of this MIB is to perform a HA compatibility check
--   of the two versions of the software and list the incompatibilities
--
--   To achieve this goal, there are 2 tables defined in this MIB.
--
--   ciscoImageCheckOpTable, is an 'operations' table, in that this
--   table is used to invoke a command to perform a check on the 
--   images.
--
--   ciscoImgChkResultsTable, is a read-only table where the results of
--   previous operation are read. It is this table that lists the
--   incompatibilities.
--  
--   Terminology -
--
--     HA         - High Availability
-- 
--     Feature    - A software service like zoning, routing etc.
--
--     Capability - A configuration attribute mapping to some
--                  hardware-dependent configuration. A 
--                  capability is described by this infrastructure if
--                  it can be programmed in one version of the software
--                  but it can't be programmed in some earlier version.
--
--     Strict and Loose incompatibility - An incompatibility exists 
--                  between the configuration of the software running
--                  on the active supervisor and the configuration 
--                  supported by the standby supervisor when a specific
--                  capability is enabled, but software on the standby
--                  supervisor does not support it. The incompatibility
--                  is said to be 'Strict', when a switchover to the 
--                  older version software release would cause some
--                  unpredictable behaviour as long as the capability 
--                  is enabled. The incompatibility is said to be
--                  'Loose' when a switchover to the older release
--                  would not cause an unpredictable behaviour or 
--                  instability in the system.
--
--
 


ciscoImageCheckOpTable  OBJECT-TYPE
        SYNTAX          SEQUENCE OF CiscoImageCheckOpEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION  
                "A table of Image check operation entries. Each
                entry represents an Image check operation that 
                has been initiated.
                "
        ::= { ciscoImageCheck 1 }

ciscoImageCheckOpEntry  OBJECT-TYPE
        SYNTAX          CiscoImageCheckOpEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION
                "An Image check operation entry. Each entry consists 
                of an image name, current status of the check
                operation and a row status.

                A management station wishing to create an entry should
                first generate a pseudo-random serial number to be used
                as the index to this sparse table.  The station should
                then create the associated instance of the row status
                object. It must also, create the associated instance
                of the image name. This image is checked for 
                compatibility with the image already running on the
                active supervisor.

                Once the appropriate instances of all the mandatory
                objects have been created, either by an explicit SNMP
                set request or by default, the row status should be set
                to active to initiate the operation. Note that this entire
                procedure may be initiated via a single set request which
                specifies a row status  of createAndGo.

                Once an operation has been activated, it cannot be
                stopped. 

                Once the operation completes, the management station should
                retrieve the value of the status object and delete the
                entry.  In order to prevent old entries from clogging the
                table, entries will be aged out, but an entry will never
                be deleted within 5 minutes of completing.
                "

        INDEX   { ciscoImageCheckSerialNum }
        ::= { ciscoImageCheckOpTable 1 }


CiscoImageCheckOpEntry ::=
        SEQUENCE {
        ciscoImageCheckSerialNum    Integer32,
        ciscoImageCheckImageName    SnmpAdminString,
        ciscoImageCheckStatus       INTEGER,
        ciscoImageCheckEntryStatus  RowStatus
        }

ciscoImageCheckSerialNum OBJECT-TYPE
        SYNTAX           Integer32 (1..2147483647)
        MAX-ACCESS       not-accessible
        STATUS           current
        DESCRIPTION
                "Object which specifies a unique entry in the 
                table. A management station wishing to initiate a 
                check operation should use a pseudo-random value for
                this object when creating or modifying an instance of
                a ciscoImageCheckOpEntry.
                "
        ::=   { ciscoImageCheckOpEntry 1 }


ciscoImageCheckImageName OBJECT-TYPE
        SYNTAX           SnmpAdminString (SIZE (1..255))
        MAX-ACCESS       read-create
        STATUS           current
        DESCRIPTION
                "Image file name that needs the verification.
  
                 If the Image name is NULL then it is assumed that
                 the image check is to be done with the image on 
                 standby supervisor.
                "
        ::= { ciscoImageCheckOpEntry 2 }


ciscoImageCheckStatus OBJECT-TYPE
        SYNTAX        INTEGER {
                                       none(1), 
                                       inProgress(2), 
                                       inCompatLoose(3),  
                                       inCompatStrict(4),  
                                       compatible(5),
                                       noStandby(6),
                                       pssErr(7),
                                       extractFail(8),
                                       fileParseErr(9),
                                       getIncompatErr(10)
                       }
        MAX-ACCESS     read-only
        STATUS         current
        DESCRIPTION
                "The current status of the image check operation.
                
                 If the status is inCompatLoose(3) or 
                 inCompatStrict(4), one can look at the detail
                 reasons of incompatibilities by looking at 
                 ciscoImgChkResultsTable described below.

                 If the status is compatible, then there is no
                 need to look at the ciscoImgChkResultsTable.

                 If the status is noStandby(6), pssErr(7),
                 extractFail(8), fileParseErr(9) or 
                 getIncompatErr(10), there is some internal error
                 in even starting the check compatibility process,
                 and hence the ciscoImgChkResultsTable should not
                 be read for any details.

                 inProgress(2)      - Image check is in progress
                 inCompatLoose(3)   - Loose incompatibility
                 inCompatStrict(4)  - Strict incompatibility
                 compatible(5)      - images are compatible
                 noStandby(6)       - standby supervisor is absent
                 pssErr(7)          - internal error
                 extractFail(8)     - Could not extract image
                 fileParseErr(9)    - Could not parse image
                 getIncompatErr(10) - internal error in determining
                                      incompatibilities. 

                "
        ::= { ciscoImageCheckOpEntry 3 }
        

ciscoImageCheckEntryStatus OBJECT-TYPE
        SYNTAX             RowStatus
        MAX-ACCESS         read-create
        STATUS             current
        DESCRIPTION
                "The status of this table entry."
        ::= { ciscoImageCheckOpEntry 4 }


-- Image Check results Table


ciscoImgChkResultsTable OBJECT-TYPE
    SYNTAX              SEQUENCE OF CiscoImgChkResultsEntry
    MAX-ACCESS          not-accessible
    STATUS              current
    DESCRIPTION
                "This table lists the features and capabilities
                 that are incompatible for the request that was
                 made corresponding to the instance of 
                 ciscoImgChkFeatureIndex in the ciscoImageCheckOpTable."
        ::= { ciscoImageCheck 2 }
 

ciscoImgChkResultsEntry OBJECT-TYPE
        SYNTAX          CiscoImgChkResultsEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION
                "An entry of ciscoImgChkResultsTable. "
        INDEX {
                   ciscoImageCheckSerialNum,
                   ciscoImgChkFeatureIndex,
                   ciscoImgChkCapabIndex
                  }
        ::= { ciscoImgChkResultsTable 1 }


CiscoImgChkResultsEntry ::=
        SEQUENCE {
                ciscoImgChkFeatureIndex         Integer32,
                ciscoImgChkCapabIndex           Integer32,
                ciscoImgChkFeatureName          SnmpAdminString,
                ciscoImgChkCapabilityName       SnmpAdminString,
                ciscoImgChkCapabilityReq        INTEGER,
                ciscoImgChkInCompDescr          SnmpAdminString
        }

ciscoImgChkFeatureIndex OBJECT-TYPE
        SYNTAX          Integer32 (1..65535)
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION
                "The index of the incompatible feature."
        ::= { ciscoImgChkResultsEntry 1 }


ciscoImgChkCapabIndex OBJECT-TYPE
        SYNTAX        Integer32 (1..65535)
        MAX-ACCESS    not-accessible
        STATUS        current
        DESCRIPTION
                "The index of the incompatible capability."
        ::= { ciscoImgChkResultsEntry 2 }


ciscoImgChkFeatureName OBJECT-TYPE
        SYNTAX         SnmpAdminString (SIZE (1..32))
        MAX-ACCESS     read-only
        STATUS         current
        DESCRIPTION
                "The name of the incompatible feature.
                 The list of features is subject to 
                 implementation in a given software
                 release. The current list of features is
                 as follows -
        
                 fspf       - FSPF Routing Protocol Application
                 fcmpls     - Multi-Protocol Label Switching
                 fib        - FIB Manager
                 flogi      - F Port Server
                 rscn       - RSCN Module
                 fcns       - Name Server
                 fcdomain   - Domain Manager
                 fc-tunnel  - FC MPLS tunnel
                 ipfc       - Ipfc Manager
                 ipconf     - IP Configuration Manager
                 ips        - IPS Manager
                 port       - Port Manager
                 port-channel - Port Channel Manager
                 span       - Switch Port Analyzer
                 sysmgr-ver - System Manager version controller
                 vrrp-cfg   - VRRP Configuration
                 vsan       - VSAN manager
                 zone       - Zone Server
                
                "
        ::= { ciscoImgChkResultsEntry 3 }


ciscoImgChkCapabilityName OBJECT-TYPE
        SYNTAX            SnmpAdminString (SIZE (1..64))
        MAX-ACCESS        read-only
        STATUS            current
        DESCRIPTION
                "The name of the incompatible capability. 

                 The list of capabilities is subject to
                 implementation in a given software
                 release. The current list of capabilities 
                 is as follows -

                 CAP_FEATURE_SPAN_FCFWD_STBY_POP_ENABLED
                 CAP_FEATURE_SPAN_IF_VSAN_SRC_MIX_NOT_ALLOWED
                 CAP_FEATURE_SPAN_IF_SRC_VSAN_FILTER_NOT_ALLOWED
                 CAP_FEATURE_SPAN_FC_TUNNEL_CFG
                 CAP_FEATURE_SPAN_ST_PORT_CFG
                 CAP_FEATURE_SPAN_FCIP_SRC_CFG
                 CAP_FEATURE_SPAN_ISCSI_SRC_CFG
                 CAP_FEATURE_ZS_READ_ONLY_ZONING
                 CAP_FEATURE_ZS_LUN_ZONING
                 CAP_FEATURE_PORT_MODE_ST_CFG
                 CAP_FEATURE_FC_TUNNEL_CFG
                 CAP_FEATURE_PORT_PERFORMANCE_BUF
                "
        ::= { ciscoImgChkResultsEntry 4 }


ciscoImgChkCapabilityReq OBJECT-TYPE
        SYNTAX           INTEGER {
                                  strict(1),
                                  loose(2) 
                         }
        MAX-ACCESS       read-only
        STATUS           current
        DESCRIPTION
                "Whether capability check is strict or loose. "
        ::= { ciscoImgChkResultsEntry 5 }


ciscoImgChkInCompDescr OBJECT-TYPE
        SYNTAX        SnmpAdminString (SIZE (1..255))
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
                "Description of the incompatibilty. 
    
                 For example, if the name of the 
                 incompatibilty (the instance of 
                 ciscoImgChkCapabilityName) is 
                 CAP_FEATURE_ZS_READ_ONLY_ZONING, then the
                 description will be -

                 'Zone Server - Read-only zoning configured'.

                 For each incompatibility name that appears in
                 ciscoImgChkCapabilityName, there will be a
                 corresponding description described by the
                 instance of this object.
                "
        ::= { ciscoImgChkResultsEntry 6 }



-- Conformance information

ciscoImageCheckMIBConformance
       OBJECT IDENTIFIER ::= { ciscoImageCheckMIB 2 }

ciscoImageCheckMIBCompliances
       OBJECT IDENTIFIER ::= { ciscoImageCheckMIBConformance 1 }

ciscoImageCheckMIBGroups
       OBJECT IDENTIFIER ::= { ciscoImageCheckMIBConformance 2 }

ciscoImageCheckMIBCompliance MODULE-COMPLIANCE
        STATUS   current
        DESCRIPTION
                "The compliance statement for entities which
                 implement the CISCO-IMAGE-CHECK-MIB."
        MODULE MANDATORY-GROUPS {
                 ciscoImageCheckOpGroup,
                 ciscoImgChkResultsGroup
        }

        OBJECT     ciscoImageCheckEntryStatus
        SYNTAX     INTEGER {
                     active(1),
                     createAndGo(4),
                     destroy(6)}
        DESCRIPTION
                "Only 'createAndGo', 'destroy' and 'active' need to
                 be supported."
        ::= { ciscoImageCheckMIBCompliances 1 }


-- Units of Conformance

ciscoImageCheckOpGroup  OBJECT-GROUP
        OBJECTS   {
                    ciscoImageCheckImageName,
                    ciscoImageCheckStatus,
                    ciscoImageCheckEntryStatus
                  }
        STATUS   current
        DESCRIPTION
                "A collection of objects for Image Check
                 Operations group."
        ::= { ciscoImageCheckMIBGroups 1 }


ciscoImgChkResultsGroup OBJECT-GROUP
        OBJECTS   {
                   ciscoImgChkFeatureName,
                   ciscoImgChkCapabilityName,
                   ciscoImgChkCapabilityReq,
                   ciscoImgChkInCompDescr
                  }
        STATUS   current
        DESCRIPTION
                "A collection of objects for Image check results
                 group."
        ::= { ciscoImageCheckMIBGroups 2 }


END